#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>


typedef int DataType;

typedef struct ListNode
{
	struct ListNode* prev;
	struct ListNode* next;
	DataType data;
}ListNode;

ListNode* ListInit();

void ListPushBack(ListNode* phead, DataType x);


void ListDestory(ListNode* phead);

void ListPrint(ListNode* phead);

void ListPushFront(ListNode* phead, DataType x);


void ListPopPush(ListNode* phead);

void ListPopBack(ListNode* phead);

ListNode* ListFind(ListNode* phead, DataType x);

void ListInsert(ListNode* pos, DataType x);

void ListEarth(ListNode* pos);

bool is_empty(ListNode* phead);

int Listsize(ListNode* phead);